
//原理：独立函数调用，this指向window；并不是看它定义的时候是不是独立的
//案例1  this指向window
function foo() {
    console.log("1: "+this)
}

foo()



//案例2 下面也是f1()和f2()函数调用也是在调用的时候，独立调用(就是f1(),f2()调用时候的前面没有其它的东西)
//下面三个this也都是指向window
function f1() {
    console.log("2: "+this)
}
function f2() {
    console.log("2: "+this)
    f1()
}
function f3() {
    console.log("2: "+this)
    f2()
}

f3()


//案例3  因为是调用的时候还是独立调用的(bar())，所以this还是指向window（独立函数调用，this指向window）
//并不是看它定义的时候是不是独立的
//下面输出的this也是window
var obj = {
    name: 'kkkzx',
    foo: function () {
        console.log("3:"+this)
    }
}
var bar = obj.foo
bar()

//案例4
//因为调用的时候还是独立，所以this是window
function fooo() {
    console.log("4: "+this)
}
var obj = {
    name: 'kkkzx',
    foo0: fooo
}
var bar = obj.foo0
bar()

//案例5
//独立调用也是this指向window
function foo5() {
    function bar5() {
        console.log("5:"+this)
    }
    return bar5
}
var fn5 = foo5()
fn5() //这里调用this指向window

var obj5 = {
    name: 'kkl',
    eating: fn5
}
obj5.eating() //这里调用不是独立调用了，指向obj5；隐式绑定



